package org.example.serialize;

import java.io.*;

enum Color implements Serializable {
    RED, BLUE, GREEN;
    private static final long serialVersionUID = 2L;
}
public class EnumSerializeTests {
    public static void main(String[] args) throws IOException {
        // 枚举类型的对象也可以被序列化
        // try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("color.ser"))){
        //     oos.writeObject(Color.RED);
        // }

        // 枚举类型也可以被反序列化
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("color.ser"))){
            Color color = (Color) ois.readObject();
            System.out.println(color);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }

        // 另外，假如序列化时Color包含一个枚举值BLACK，序列后修改了Color的定义，把BLACK给移除了，接着用之前序列化得到的数据进行反序列化，
        // 此时会反序列化失败并抛出java.io.InvalidObjectException: enum constant BLACK does not exist in class org.example.serialize.Color
    }
}
